访问电脑版页面

导航:老古开发网手机版51单片机51单片机汇编编程

MCS-51单片机实用子程序库--浮点数除法

导读:
关键字:
标号: FDIV 功能:浮点数除法

入口条件:被除数在[R0]中,除数在[R1]中。
出口信息:OV=0时,商仍在[R0]中,OV=1时,溢出。
影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求: 5字节
FDIV: INC R0
MOV A,@R0
INC R0
ORL A,@R0
DEC R0
DEC R0
JNZ DIV1
MOV @R0,#41H;被除数为零,不必运算
CLR OV
RET
DIV1: INC R1
MOV A,@R1
INC R1
ORL A,@R1
DEC R1
DEC R1
JNZ DIV2
SETB OV ;除数为零,溢出
RET
DIV2: LCALL MVR0 ;将[R0]传送到第一工作区中
MOV A,@R0
XRL A,@R1 ;比较两个操作数的符号
RLC A
MOV 1FH,C ;保存结果的符号
LCALL MVR1 ;将[R1]传送到第二工作区中
LCALL DIV3 ;调用工作区浮点除法
LJMP MOV0 ;回传结果
DIV3: CLR C ;比较尾数的大小
MOV A,R4
SUBB A,R7
MOV A,R3
SUBB A,R6
JC DIV4
LCALL RR1 ;被除数右规一次
SJMP DIV3
DIV4: CLR A ;借用R0R1R2作工作寄存器
XCH A,R0 ;清零并保护之
PUSH ACC
CLR A
XCH A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV B,#10H ;除法运算,R3R4/R6R7-→R0R1
DIV5: CLR C
MOV A,R1
RLC A
MOV R1,A
MOV A,R0
RLC A
MOV R0,A
MOV A,R4
RLC A
MOV R4,A
XCH A,R3
RLC A
XCH A,R3
MOV F0,C
CLR C
SUBB A,R7
MOV R2,A
MOV A,R3
SUBB A,R6
ANL C,/F0
JC DIV6
MOV R3,A
MOV A,R2
MOV R4,A
INC R1
DIV6: DJNZ B,DIV5
MOV A,R6 ;四舍五入
CLR C
RRC A
SUBB A,R3
CLR A
ADDC A,R1 ;将结果存回R3R4
MOV R4,A
CLR A
ADDC A,R0
MOV R3,A
POP ACC ;恢复R0R1R2
MOV R2,A
POP ACC
MOV R1,A
POP ACC
MOV R0,A
MOV A,R2 ;计算商的阶码
CLR C
SUBB A,R5
LCALL MD ;阶码检验
LJMP RLN ;规格化

来源:   作者:  2006/9/25 16:50:53
栏目: [ 51单片机汇编编程]

相关阅读

在 KEIL C51 中如何直接嵌入汇编

在C51中如何实现汇编的DA A指令?

#pragma asm是什么意思?

51单片机对交通灯的控制设计

请问怎样用89C51采集多路脉冲信号?

CRC16-STANDARD的快速算法,51汇编

双字节十六进制小数转换成双字节BCD码小数

MCS-51单片机汇编伪指令的用法解析

MCS-51单片机实用子程序库

C51单片机的压缩BCD码相加程序

汇编中的ORG 0X0000H 在C51中如何实现

51单片机汇编语言-延时程序的延时时间

MCS-51单片机布尔处理功能解析

16位数据传送指令(1条)——mcs51单片机汇编语言

MCS-51单片机地址指针的应用

MCS-51单片机实用子程序库--浮点数除法

MSC-51单片机的3字节和4字节浮点数计算程序分析

使用汇编,中断响应后RETI返回后没有回到原处,而是回到另外一处,如何解决

单片机双机并行通信中所遇问题

51单片机的汇编语言指令中英文对照